<?php
namespace App\Admin\Controllers;

use App\Admin\Filters\WorshipBibleVolumeFilter;
use App\Admin\Models\SystemModel;
use App\Admin\Models\WorshipBibleVolume;
use App\Admin\Requests\WorshipBibleVolumeRequest;
use App\Admin\Resources\WorshipBibleVolumeResource;
use Illuminate\Support\Facades\Cache;

class WorshipBibleVolumeController extends Controller
{
    public function store(
        WorshipBibleVolumeRequest $request, 
        WorshipBibleVolume $worshipBibleVolume
    ){
        $inputs = $request->validated();
        $token = md5(json_encode($inputs));
        unset($inputs['token']);
        if (Cache::get($token) == 2) {
            return $this->error('请不要重复提交数据');
        } 
        Cache::put($token, 1);
        $worshipBibleVolume = $worshipBibleVolume->add($inputs);
        Cache::put($token, 2);

        return $this->created(WorshipBibleVolumeResource::make($worshipBibleVolume));
    }

    public function create()
    {
        return $this->ok();
    }

    public function update(
        WorshipBibleVolumeRequest $request, 
        WorshipBibleVolume $worshipBibleVolume
    ){
        $inputs = $request->validated();
        $worshipBibleVolume->update($inputs);

        return $this->created(WorshipBibleVolumeResource::make($worshipBibleVolume));
    }

    public function edit(WorshipBibleVolume $worshipBibleVolume)
    {
        return $this->ok(WorshipBibleVolumeResource::make($worshipBibleVolume));
    }
    
    public function destroy(
        WorshipBibleVolume $worshipBibleVolume
    ){
        $worshipBibleVolume->delete();
        return $this->noContent();
    }

    public function index(
        WorshipBibleVolumeFilter $filter,
        WorshipBibleVolume $worshipBibleVolume
    ){
        $worshipBibleVolumes = WorshipBibleVolume::withTrashed(isRestore())
            ->filter($filter)
            ->select(SystemModel::getFields($worshipBibleVolume->getTable()))
            ->paginate();

        return $this->ok(WorshipBibleVolumeResource::collection($worshipBibleVolumes));
    }

    public function show(
        Int $id
    ){
        $worshipBibleVolume = WorshipBibleVolume::withTrashed(isRestore())
            ->select(SystemModel::getFields(app(WorshipBibleVolume::class)->getTable(), 'detail'))
            ->find($id);
        return $this->ok(WorshipBibleVolumeResource::make($worshipBibleVolume));
    }
}
